En la capa anterior analizamos el funcionamiento de la red a través
de protocolos IP. Eso nos daba la posibilidad de conectar host con host
y de esa manera poder estimar de alguna manera ciertas nociones
de distancias. En la capa de Red sólo tenemos acceso a los hosts pero no a los servicios que brinda.

En el presente taller nos vamos a enfocar en esa problemática.
Vamos a subir un escalón hasta la capa de transporte y comenzar
a indagar en la información que se puede obtener de un determinado
host. Los protocolos TCP y UDP de transporte generan multiplexación
en las comunicaciones de manera que cada host pueda utilizar muchos
canales para comunicarse con otros hosts, los cuales a su vez
tienen los propios. Estos canales son los \textit{ports} y permiten
que un host pueda enviar y/o recibir paquetes a través de él.

Existen $2^{16}$ puertos a/desde los cuales conectarse. Cuando un host
quieren brindar un servicio, por ejemplo montar un servidor web,
tiene que indicar un puerto por el cual va a recibir los paquetes.
Pero además, los otros hosts que quieran ingresar al servidor web deben
conocer ese puerto (además de la dirección ip). Es por ello que
existen determinados puertos a los cuales algunas aplicaciones
los usan por defecto.

Al tener los puertos abiertos cualquiera puede usar los servicios 
ofrecidos por el servidor en estos puertos. Esto también tiene implicancias 
en la seguridad, ya que es un canal por el cual se puede establecer
una comunicación con el programa que atiende en el puerto abierto.

En este taller vamos a poner el foco sobre la seguridad, basándonos
en herramientas de la capa de transporte. Vamos a realizar
\textit{port scanning} para conocer aquellos puertos que brindan servicio.
Luego, a sabiendas del puerto (y muy probablemente del servicio brindado)
podremos conocer el tipo de aplicación (y versión de la misma) 
que está corriendo en el puerto. Esto se conoce como técnica de 
\textit{banner grabbing}. Por último, la técnica conocida como
\textit{OS finterprinting} nos permite averiguar el sistema operativo
subyacente en el servicio brindando en determinado puerto.

Tal como fue realizado en los talleres anteriores, los programas
están realizados en \texttt{python} bajo la biblioteca \texttt{scapy}.
El análisis de datos se realiza mediante \texttt{Wireshark} y el
entorno \texttt{R}.
